package com.sky.service;

import com.sky.dto.CategoryDTO;
import com.sky.dto.ShoppingCartDTO;
import com.sky.entity.*;
import com.sky.vo.DishItemVO;
import com.sky.vo.DishVO;
import com.sky.vo.UserReportVO;

import java.time.LocalDate;
import java.util.List;

/**
 * @author iTaotao
 * @version 1.0
 * @Description
 * @createTime 2023年08月01日 15:39:00
 */
public interface UserService {
    /**
     * 选择类别列表
     *
     * @param type 类型
     * @return {@link Category}
     */
    List<Category>  selectCategoryList(CategoryDTO categoryDTO);

    /**
     * 选择菜列表
     *
     * @param categoryId 类别id
     * @return {@link Dish}
     */
    List<DishVO> selectDishList(Integer categoryId);

    /**
     * 选择套餐列表
     *
     * @param categoryId 类别id
     * @return {@link List}<{@link Setmeal}>
     */
    List<Setmeal> selectSetMealList(Long categoryId);

    /**
     * 选择套餐菜
     *
     * @param id id
     * @return {@link List}<{@link SetmealDish}>
     */
    List<DishItemVO> selectSetMealDish(Long id);

    /**
     * 选择商店购物车列表
     *
     * @return {@link List}<{@link ShoppingCart}>
     */
   void add(ShoppingCartDTO shoppingCartDTO);

    /**
     * 列表
     *
     * @return {@link ShoppingCart}
     */
    List<ShoppingCart> list();

    /**
     * 清洁
     */
    void clean();

    /**
     * 子
     *
     * @param shoppingCartDTO 购物车dto
     */
    void sub(ShoppingCartDTO shoppingCartDTO);

    /**
     * 用户数据
     *
     * @param begin 开始
     * @param end   结束
     * @return {@link UserReportVO}
     */
    UserReportVO userStatistics(LocalDate begin, LocalDate end);
}
